package cn.virens.database.mysql.model.sys;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;

import com.alibaba.fastjson.annotation.JSONField;

@Table(name = "sys_user")
public class SysUser implements Serializable {
	@Id
	@GeneratedValue(generator = "JDBC")
	private Integer id;

	/** 用户角色ID */
	@Column(name = "role_id")
	private Integer roleId;

	/** 用户帐号 */
	private String account;

	/** 用户密码 */
	private String password;

	/** 用户名称 */
	private String name;

	/** 头像 */
	private String icon;

	/** 用户联系方式 */
	private String phone;

	/** 联系QQ */
	private String qq;

	/** 联系邮箱 */
	private String email;

	/** 创建时间 */
	@JSONField(format = "yyyy-MM-dd")
	@Column(name = "create_time")
	private Date createTime;

	/** 编辑时间 */
	@JSONField(format = "yyyy-MM-dd")
	@Column(name = "update_time")
	private Date updateTime;

	private static final long serialVersionUID = 1L;

	/** 用户角色 */
	@Transient
	private SysRole role;

	/** @return id */
	public Integer getId() {
		return id;
	}

	/** @param id */
	public void setId(Integer id) {
		this.id = id;
	}

	public Integer getRoleId() {
		return roleId;
	}

	public void setRoleId(Integer roleId) {
		this.roleId = roleId;
	}

	/**
	 * 获取用户帐号
	 * 
	 * @return account - 用户帐号
	 */
	public String getAccount() {
		return account;
	}

	/**
	 * 设置用户帐号
	 * 
	 * @param account 用户帐号
	 */
	public void setAccount(String account) {
		this.account = account == null ? null : account.trim();
	}

	/**
	 * 获取用户密码
	 * 
	 * @return password - 用户密码
	 */
	public String getPassword() {
		return password;
	}

	/**
	 * 设置用户密码
	 * 
	 * @param password 用户密码
	 */
	public void setPassword(String password) {
		if (StringUtils.isNotEmpty(password)) {
			this.password = DigestUtils.md5Hex(password);
		} else {
			this.password = null;
		}
	}

	/**
	 * 获取用户名称
	 * 
	 * @return name - 用户名称
	 */
	public String getName() {
		return name;
	}

	/**
	 * 设置用户名称
	 * 
	 * @param name 用户名称
	 */
	public void setName(String name) {
		this.name = name == null ? null : name.trim();
	}

	/**
	 * 获取头像
	 * 
	 * @return icon - 头像
	 */
	public String getIcon() {
		return icon;
	}

	/**
	 * 设置头像
	 * 
	 * @param icon 头像
	 */
	public void setIcon(String icon) {
		this.icon = icon == null ? null : icon.trim();
	}

	/**
	 * 获取用户联系方式
	 * 
	 * @return phone - 用户联系方式
	 */
	public String getPhone() {
		return phone;
	}

	/**
	 * 设置用户联系方式
	 * 
	 * @param phone 用户联系方式
	 */
	public void setPhone(String phone) {
		this.phone = phone == null ? null : phone.trim();
	}

	/**
	 * 获取联系QQ
	 * 
	 * @return qq - 联系QQ
	 */
	public String getQq() {
		return qq;
	}

	/**
	 * 设置联系QQ
	 * 
	 * @param qq 联系QQ
	 */
	public void setQq(String qq) {
		this.qq = qq == null ? null : qq.trim();
	}

	/**
	 * 获取联系邮箱
	 * 
	 * @return email - 联系邮箱
	 */
	public String getEmail() {
		return email;
	}

	/**
	 * 设置联系邮箱
	 * 
	 * @param email 联系邮箱
	 */
	public void setEmail(String email) {
		this.email = email == null ? null : email.trim();
	}

	/**
	 * 获取创建时间
	 * 
	 * @return create_time - 创建时间
	 */
	public Date getCreateTime() {
		return createTime;
	}

	/**
	 * 设置创建时间
	 * 
	 * @param createTime 创建时间
	 */
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	/**
	 * 获取编辑时间
	 * 
	 * @return update_time - 编辑时间
	 */
	public Date getUpdateTime() {
		return updateTime;
	}

	/**
	 * 设置编辑时间
	 * 
	 * @param updateTime 编辑时间
	 */
	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}

	/**
	 * 获取用户角色
	 * 
	 * @return role - 用户角色
	 */
	public SysRole getRole() {
		return role;
	}

	/**
	 * 设置用户角色
	 * 
	 * @param role 用户角色
	 */
	public void setRole(SysRole role) {
		this.role = role;
	}
}